from PySide6.QtCore import Qt
from PySide6.QtGui import QTextOption
from PySide6.QtWidgets import QGraphicsTextItem

from 程序核心代码.mvvm重构.基础定义.基础图形项.基础图形组件.子组件.基本文本组件.基础文本组件 import 对齐方式
from 程序核心代码.mvvm重构.基础定义.基础图形项.节点接口 import 文本偏移


class 连接点文本(QGraphicsTextItem):
    def __init__(self, 方向, 流类型, 文本=None,父项=None):
        super().__init__(文本 or f"{流类型}",parent=父项)
        self.方向 = 方向

        #起始接口.调整文本位置()
        self.setDefaultTextColor(Qt.blue) #设置文本颜色
        self.setTextInteractionFlags(Qt.NoTextInteraction)#设置文本不可编辑
        if self.方向 == "输入":
            参数文本选项 = QTextOption(Qt.AlignLeft)
        else:
            参数文本选项 = QTextOption(Qt.AlignRight)#设置文本右对齐
        self.document().setDefaultTextOption(参数文本选项)
        if self.方向 == "输出":
            self.设置文本对齐方式(对齐方式.右对齐)
    def 编辑文本(self):
        self.setTextInteractionFlags(Qt.TextEditorInteraction)
        self.setFocus()

    def 调整文本位置(self):
        if self.parentItem():
            parent_rect = self.parentItem().boundingRect()
            text_rect = self.boundingRect()
            if self.方向 == "输入":
                self.setPos(parent_rect.left() + 文本偏移, parent_rect.center().y() - text_rect.height() / 2)
            else:
                self.setPos(parent_rect.right() - text_rect.width() - 文本偏移, parent_rect.center().y() - text_rect.height() / 2)

    def update(self, rect=None):
        super().update(rect)
        self.调整文本位置()
    def 设置文本对齐方式(self, 对齐方式):
        """设置文本对齐方式"""
        try:
            self.document().setDefaultTextOption(QTextOption(对齐方式.value))
            self.adjustSize()
        except Exception as e:
            print(f"设置文本对齐方式时发生错误: {e}")